Repository navigation
Rollup of 9 pull requests - #165793
Rollup of 9 pull requests#165793
Conversation
Currently we build it even when the `NEEDS_CANONICAL` test fails.
It has a single call site. This will enable an optimization in the next commit.
Do a `NEEDS_CANONICAL` check on the entire input. We already have such checks on the relevant parts, but this lets us entirely avoid building a `Canonicalizer` when the check fails.
It causes it to intern or not intern. Instead we can just let the call site that passes in `true` do its own interning.
`decode_error_kind` for Hermit only knew 15 errno values and returned `Uncategorized` for all others. For example, removing a non-empty directory failed with `Uncategorized` instead of `DirectoryNotEmpty`. Hermit uses the Linux errno numbering, so use the same mapping as on Unix. `hermit-abi` defines no `ENOTSUP` and `EWOULDBLOCK` is an alias of `EAGAIN`, so both need no separate arm.
…ts should be skipped in Miri due to missing shims
It is represented as an ADT, so needs custom logic to be accepted. The point of this type is that it's compatible with its C counterpart, so the lint definitely should accept it.
```
error[E0364]: `f` is private, and cannot be re-exported
--> $DIR/privacy-early.rs:10:13
|
LL | pub macro m() {
LL | use f as g;
| ^^^^^^
...
LL | foo::m!();
| --------- in this macro invocation
|
note: consider marking `f` as `pub` in the imported module
--> $DIR/privacy-early.rs:6:5
|
LL | fn f() {}
| ^^^^^^^^^
```
where it was
```
error[E0364]: `f` is private, and cannot be re-exported
--> $DIR/privacy-early.rs:10:13
|
LL | pub macro m() {
LL | use f as g;
| ^^^^^^
...
LL | foo::m!();
| --------- in this macro invocation
|
note: consider marking `f` as `pub` in the imported module
--> $DIR/privacy-early.rs:10:13
|
LL | use f as g;
| ^^^^^^
...
LL | foo::m!();
| --------- in this macro invocation
```
Use span when suggesting making module public:
```
note: consider declaring module `foo` with `pub`
--> $DIR/E0365.rs:1:1
|
LL | / mod foo {
LL | | pub const X: u32 = 1;
LL | | }
| |_^
```
Show container when talking about enclosing module:
```
note: consider marking `f` as `pub` in the imported module
--> $DIR/privacy-early.rs:6:5
|
LL | mod foo {
LL | fn f() {}
| ^^^^^^^^^
```
Use accurate descriptor for enclosing item:
```
note: consider declaring struct `S1` with `pub`
--> $DIR/crate-private-reexport.rs:3:1
|
LL | / struct S1 {
LL | | #[rustfmt::skip]
LL | | bar: i32,
LL | | }
| |_^
```
```
note: consider marking `Full` as `pub` in the imported variant
--> $DIR/issue-46209-private-enum-variant-reexport.rs:26:9
|
LL | enum Lieutenant {
LL | JuniorGrade,
LL | Full,
| ^^^^
```
like commit cbdd3f3 did for stable.
…e: field is not printed * In irrefutable patterns, the FieldPat is skipped, which means the name: field is not printed; since FieldPat can be listed out of order and the list can be incomplete, it is not generally possible to associate a given pattern within a Leaf or Variant with the actual field. the slightly janky indentation is consistent with the way the other PatKinds do it (with no comma) * avoid referring to std in THIR tests * review feedback (test too long) * review feedback (naming, explanation, test too long) * additional review feedback (test still too long)
…r=maxdexh std: use skip_unsupported_miri_tests to control when tests should be skipped in Miri due to missing shims We currently run some subset of std tests in Miri, skipping some because Miri doesn't support the operations they need. That is based on filters in the makefile. People don't know what is actually being tested and add random `cfg(miri)` in places to disable tests that were never run. This makes it quite hard to track which tests are being skipped and which operations we should add in Miri to get 100% std coverage. So let's replace that string-based filter with a cfg flag, `skip_unsupported_miri_tests`, that can be annotated at the tests. Unfortunately I can't figure out how to disable all doctests in a module based on a cfg flag, so this entirely disables std doctests being run in Miri in our CI. (We still run them in https://github.com/rust-lang/miri-test-libstd.) See prior discussion [on Zulip](https://rust-lang.zulipchat.com/#narrow/channel/219381-t-libs/topic/Miri.20vs.20tests.20in.20std/with/635913743). Docs PR: rust-lang/std-dev-guide#86 r? @tgross35 try-job: test-x86_64-gnu-aux
…beta, r=Kobzol Normalize "beta release channel" in `const-supertrait-unstable` test like commit cbdd3f3 did for stable. It failed on beta in <rust-lang#165713 (comment)>. r? @Kobzol
…, r=programmerjake Wrap proc-macro `EscapeError` enum into a struct As discussed in rust-lang#151973. Part of rust-lang#165750. r? @programmerjake
Tweak private re-export errors to point at correct span and have more context
Use the correct span when talking about imported module that should be marked as public:
```
error[E0364]: `f` is private, and cannot be re-exported
--> $DIR/privacy-early.rs:10:13
|
LL | pub macro m() {
LL | use f as g;
| ^^^^^^
...
LL | foo::m!();
| --------- in this macro invocation
|
note: consider marking `f` as `pub` in the imported module
--> $DIR/privacy-early.rs:6:5
|
LL | fn f() {}
| ^^^^^^^^^
```
where it was:
```
error[E0364]: `f` is private, and cannot be re-exported
--> $DIR/privacy-early.rs:10:13
|
LL | pub macro m() {
LL | use f as g;
| ^^^^^^
...
LL | foo::m!();
| --------- in this macro invocation
|
note: consider marking `f` as `pub` in the imported module
--> $DIR/privacy-early.rs:10:13
|
LL | use f as g;
| ^^^^^^
...
LL | foo::m!();
| --------- in this macro invocation
```
Use span when suggesting making module public:
```
note: consider declaring module `foo` with `pub`
--> $DIR/E0365.rs:1:1
|
LL | / mod foo {
LL | | pub const X: u32 = 1;
LL | | }
| |_^
```
Show container when talking about enclosing module:
```
note: consider marking `f` as `pub` in the imported module
--> $DIR/privacy-early.rs:6:5
|
LL | mod foo {
LL | fn f() {}
| ^^^^^^^^^
```
Use accurate descriptor for enclosing item:
```
note: consider declaring struct `S1` with `pub`
--> $DIR/crate-private-reexport.rs:3:1
|
LL | / struct S1 {
LL | | #[rustfmt::skip]
LL | | bar: i32,
LL | | }
| |_^
```
```
note: consider marking `Full` as `pub` in the imported variant
--> $DIR/issue-46209-private-enum-variant-reexport.rs:26:9
|
LL | enum Lieutenant {
LL | JuniorGrade,
LL | Full,
| ^^^^
```
…names, r=adwinwhite In irrefutable patterns, the FieldPat is skipped, which means the name: field is not printed since FieldPat can be listed out of order and the list can be incomplete, it is not generally possible to associate a given pattern within a Leaf or Variant with the actual field. the slightly janky indentation is consistent with the way the other PatKinds do it
…-opts, r=ShoyuVanilla Canonicalization cleanups I saw some moderate perf improvements locally with these changes but on CI they had no effect. Maybe due to PGO? Most of the changes are actually refactorings which I think are still worth merging. r? @ShoyuVanilla
…, r=JonathanBrouwer Remove unnecessary mut from HirIdValidator::check_nested_id Remove unnecessary `mut` from `HirIdValidator::check_nested_id`, as this method doesn't need a mutated self. See [#t-compiler/help > The check_nested_id in HirIdValidator doesn't need mut](https://rust-lang.zulipchat.com/#narrow/channel/182449-t-compiler.2Fhelp/topic/The.20check_nested_id.20in.20HirIdValidator.20.20doesn.27t.20need.20mut/with/639210467) The changes compile successfully and pass the `./x check compiler/rustc_passes` check.
…, r=beetrees make improper_ctypes accept `x87_f80` tracking issue: rust-lang#163982 Like rust-lang#165274, but for `x87_f80`. It is represented as an ADT, so needs custom logic to be accepted. The point of this type is that it's compatible with its C counterpart, so the lint definitely should accept it. r? beetrees
std: map more errno values to ErrorKind on Hermit `decode_error_kind` for Hermit only knew 15 errno values and returned `Uncategorized` for all others. For example, removing a non-empty directory failed with `Uncategorized` instead of `DirectoryNotEmpty`. Hermit uses (more or less) the Linux errno numbering, so use the same mapping as on Unix. `hermit-abi` defines no `ENOTSUP` and `EWOULDBLOCK` is an alias of `EAGAIN`, so both need no separate arm.
|
Rollup of everything. @bors r+ rollup=never p=5 force |
This comment has been minimized.
This comment has been minimized.
What is this?This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.Comparing 9c56488 (parent) -> 9de7469 (this PR) Test differencesShow 1197 test diffsStage 1
Stage 2
(and 41 additional test diffs) Additionally, 1056 doctest diffs were found. These are ignored, as they are noisy. Job group index
Test dashboardRun cargo run --manifest-path src/ci/citool/Cargo.toml -- \
test-dashboard 9de746938314271db6dbb62dc3b4f07288d07d54 --output-dir test-dashboardAnd then open Job duration changes
How to interpret the job duration changes?Job durations can vary a lot, based on the actual runner instance |
|
📌 Perf builds for each rolled up PR:
parent commit: 9c5648833e In the case of a perf regression, run the following command with the SHAs of each PR you suspect might be the cause: |
|
Finished benchmarking commit (9de7469): comparison URL. Overall result: ❌ regressions - no action needed@rustbot label: -perf-regression Instruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)This perf run didn't have relevant results for this metric. CyclesResults (secondary 2.9%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeThis perf run didn't have relevant results for this metric. Bootstrap: 482.775s -> 483.908s (0.23%) |
Successful merges:
const-supertrait-unstabletest #165727 (Normalize "beta release channel" inconst-supertrait-unstabletest)EscapeErrorenum into a struct #165750 (Wrap proc-macroEscapeErrorenum into a struct)x87_f80#165779 (make improper_ctypes acceptx87_f80)r? @ghost
Create a similar rollup